package org.bbb.library1.product;

/*******************************************************************************
 * Copyright (c) 2007 Finalist IT Group B.V.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Rob Schellhorn - initial API and implementation
 *******************************************************************************/
//package com.finalist.rcp.internal.product;

import org.eclipse.equinox.app.IApplication;
import org.eclipse.equinox.app.IApplicationContext;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.application.WorkbenchAdvisor;

/**
 * @author Rob Schellhorn
 */
public class DemoApplication implements IApplication {

   /*
    * @see org.eclipse.equinox.app.IApplication#start(org.eclipse.equinox.app.IApplicationContext)
    */
   public Object start(IApplicationContext context) throws Exception {
      Display display = PlatformUI.createDisplay();
      try {
         WorkbenchAdvisor advisor = new DemoWorkbenchAdvisor();
         return PlatformUI.createAndRunWorkbench(display, advisor) == PlatformUI.RETURN_RESTART
               ? IApplication.EXIT_RESTART
               : IApplication.EXIT_OK;
      } finally {
         display.dispose();
      }
   }

   /*
    * @see org.eclipse.equinox.app.IApplication#stop()
    */
   public void stop() {
      final IWorkbench workbench = PlatformUI.getWorkbench();
      if (workbench != null) {
         final Display display = workbench.getDisplay();
         display.syncExec(new Runnable() {
            public void run() {
               if (!display.isDisposed()) workbench.close();
            }
         });
      }
   }
}
